Ordered retrieval of information stored in a tag-addressed memory



July 4' 1957 M. H. L EwlN 3,329,937

ORDERED RETRIEVAL OF INFORMATION STORED IN A TAG'DDRESSED MEMORY Filed March 28, 1962 13 Sheets-Sheet 1 5 e x f5; j l 0, I 0 6 0 0 Fl/P y E "Yy X FMP X j @la @la //c.

'7 fz 43 gni Qa (4% @21.4% ffm/! fe/w July 4. 1967 M, H. LEWIN 3,329,937

ORDERED RETRIEVAL 0F INFORMATION STOHED IN A TAGADDRESSED MEMORY w Filed March 25, 1962 l5 Sheets-Sheet i;

MP M01?? l, J70/a #MAM/Mm wie Jal/fi; Prim/r -U INVENTOR. /Vafrm hi fu/W M. HY LEWIN 3,329,937 ORDERED RETRIEVAL Of" NORMTION STORE@ IN A TAG-ADDRESSED MEMRY SEL 1962 13 Sheets-Sheet l INVENTDR.

July 4. 1967 Filed March M. H. LEWIN ORDERED RETRIEVAL OF INFORMATION STOHED IN July 4. 1967 A TAG-ADDRESSED MEMORY Filed March 28, 1962 13 Sheets-Sheet L fram/4f M m w MWIIQ WJ- wz M H um.. M Nm. W Y 1 Pn D \\.3.\ l u Q 1 w EF FOQ l N k QN .s w Q.. .w .www uww QQ w QN Nm. IIR/ N .w 1 QR .xv ..Mbww f u s. 1x Qu. V/ .4% 3x3 www MMS@ ...NW l mw M. H. LEWIN ORDERED RETRIEVAL OE INFORMATION STORED IN July 4. 1967 A TAG-ADDRESSED MEMORY Filed March 28, 1962 l5 Sheets-Sheet 5 wh Mbbm MGS.

INVENTOR July 4. 1967 M. H. L l-:WIN 3,329,937

ORDERED RETRIEVAL OF INFORMATION STORED IN A TAG-ADDRESSED MEMORY Fxled March 28 13 Sheets-Sheet 6 .NNI

I NV EN TOR. /lirm/ /v iw/Af B Y ,wmf/ffy M. H. LEWIN ORDERED RETRIEVAL UF July 4. 1967 INFORMATION STOHE 1N A TAG-ADDRESSED MEMORY 13 Sheets-Sheet Filed March 2S, 1962 13 Sheets-Sheet S M. H. LEWIN ORDERED RETRIEVAL OF INFORMATION STORED 1N July 4, 1967 A TAG-ADDRESSED MEMORY Filed MaICh 2S, 1962 July 4- 1957 M. H. LEWIN 3,329,937

ORDERED RETRIEVAL OF INFOHMATION STORED IN A TAG-ADDRESSED MEMORY Filed March 28, 1962 15 Sheets-Sheet ia ,w /f ,Var mwffreo ra wy .fr/wf Afri/2 fz. .Di/Vari: i ria' /r 5, J s 5/7' mfr-2N Pian auf ar ,7 @eau/v a; wie

iffa/wf/ July 4. 1967 3,329,937

M. H. LEWIN ORDERED RETRIEVAL OF INFORMATION STORBO IN A TAG-ADDRESS@ MEMORY Filed March 28, 1962 l5 Sheets-Sheet 10 July 4. 1967 M. H. LEWIN ORDERED RETRIEVAL OF NFORMATION STORED IN A TAG-ADDRESSED MEMORY 13 Sheets-Sheet ll Filed March 28, 1962 N m .W oo o oo m. co9 o9 09o oo. M ooo. o9 w oo o o9 M .ooo oo. W oo o oo.

oo o o9 ooo. no.

July 4. 1967 M. H. LEWIN ORDERED RETRIEVAL OF INFORMATION STORED IN A TAG-ADDRESSED MEMORY 13 Sheets-Sheet l2 Filed March 28. 1962 w QS@ S Q Qs Q ..05 QQ UE UE dm. dm. u: do. um dm o dw on E um om OO OO OO OO OOO OOO OOO OO OO O OOO OOO O O OOO OO O O OO O O OO OO O OOO OO O OO O OO O OOO OOO OO O OO OO OO O ma. oo.. oo: oc:

,ffm/Way July 4 1967 M` H. LEWIN 3,329,937

ORDERED RETRIEVAL OF NFRMATION STORED N A TAG-ADDRESSED MEMORY Filed March 2a. 1962 15 Sneeisneet 1s [NVE TOR. /J//imv f/z//A/ itu/Wi( United States Patent O 3,329,937 ORDERED RETRIEVAL OF INFORMATION STORED IN A TAG-ADDRESSED MEMORY Morton H. Lewin, Princeton, NJ., assigner t Radio Corporation of America, a corporation of Delaware Filed Mar. 28, 1962, Ser. No. 183,187 14 Claims. (Cl. S40-172.5)

The present invention relates to a content-addressed (known also as an associative or catalog) memory system. More particularly, the invention deals with the problem of retrieving from the memory more than one item of information (more than one word) associated with a given tag word.

Brief description of problem The content-addressed memories discussed below include a matrix of storage" elements arranged in columns and rows. Each row in the memory permanently stores a word. The memory is interrogated by applying the bit or bits of a tag word, sometimes known also as a descriptor, to a column or columns of the memory. There may be one or more words in the memory which correspond to the tag word. A memory word is said to correspond to or to be called for by a tag word when the bits in the memory word which are in the columns to which bits of the tag word are applied are respectively equal to the bits of the tag word.

The present invention is a solution to the problem of retrieving from the memory all of the words corresponding to the tag word and, in addition, doing this in some predetermined order as, for example, chronological order. This is done, not as in the `prior art, in which the different memory addresses are interrogated in sequence and the words retrieved arranged in order by following a complex sorting routine. Instead, only 2m-1 passes at the most are required, where m` is the number of words in the memory corresponding to the tag word.

Brief description of invention In the memory system of the present invention, when there is more than one word in the memory corresponding to the tag word, a system of logic is actuated. This system determines which columns in the memory have bits of different value in the different memory words corresponding to the tag word. These columns are subsequently driven by signals representative of the binary bits one and zero in accordance with a predetermined program in order to read out the Words in the memory in a selected order.

Brief description of drawings FIGS. la-le are diagrams to explain symbols employed in various other figures;

FIG. 2 is a block and schematic circuit diagram of a content-addressed memory system according to the present invention;

FIG. 3 is a flow chart describing the operation of the memory system of FIG. 2;

FIG. 4 is a block circuit diagram showing in somewhat greater detail some of the circuits in FIG. 2;

FIG. 5 is a block circuit diagram showing the interconnection among various logic circuits in the memory of the system of FIG. 2;

FIG. 6 is a more detailed block circuit diagram of the logic circuits i of FIG. 5 associated with column i of the content-addressed memory system of FIG. 2;

FIG. 7 is a schematic circuit diagram of the driver 20 of FIG. 6. This driver consists of two transistor driver stages one for each wire of column;

FIGS. 8a and 8b are block circuit diagrams to illustrate 3,329,937 Patented July 4, 1967 how the logic circuits for a content-addressed memory may be interconnected in different ways;

FIG. 9 is a block and schematic circuit diagram of another type of content-addressed memory system embodying the present invention;

FIG. l0 is a block circuit diagram of the logic circuits which are common to a group of column wires in the memory of FIG. 9;

FIG. ll is a block circuit diagram of the logic circuits for a single wire j of the group of column wires for the memory of FIG. 9;

FIG. l2 is a block circuit diagram showing the interconnection among various logic circuits in the memory system of FIG. 9;

FIG. 13 is a flow chart describing the operation of the memory system of FIG. 9;

FIGS. 14a and b together show a chart which illustrates the interrogation routine for a content-addressed memory coded in a 3-4 code; and

FIG. l5 is a generalized flow chart showing how any content-addressed memory may be interrogated according to the method of the present invention.

General A number of blocks shown in the figures represent known circuits. The circuits of these blocks are actuated by electrical signals applied to the blocks. When a signal is at one level, it represents the binary digit one" and when it is at another level, it represents the binary digit zero." For the sake of the discussion which follows, it is arbitrarily assumed that a positive signal of greater than given magnitude represents the binary digit one and a negative signal of greater than a given magnitude represents the binary digit zero Also, to simplify the discussion, rather than speaking of an electrical signal being applied to a block or logic stage, it is sometimes stated that a one or a zero is applied to the block or logic stage.

Throughout the figures both capital and small letters are used to represent signals indicative of binary digits. For example, k may represent the binary digit zero" or the binary digit one E represents the complement of the k. In a number of the figures there is a subscript to the right of a small or capital letter. In general, although not always, the subscript represents the stage to which the binary digit is being applied. For example, if the stage being described is the i stage and a signal k is leaving that stage for the next stage on the right, that signal is legended kan). The k signal entering the i stage is legended kl.

In some cases letters are employed in Boolean equations as a means for describing the circuit operation. Some of these equations appear, for example, in FIGS. la-Ie. These figures show the symbols employed for the elementary logic circuits in various figures. For example, FIG. la shows an inverter, FIG. 1b an and gate, FIG. 1d an or gate and so on.

The content-addressed memory illustrated in some of the igures which follow is arranged in columns and rows. It is arbitrarily assumed that each row stores a word. In the first memory discussed (the one of FIG. 2), each column consists of two wires. The left wire is legended the a wire and the right wire the b wire. The memory is interrogated by driving selected columns. A column is driven by a 1" by applying a l to the a wire and a 0" to the b wire. A column is driven by a 0 by applying a 0 to the a wire and a 1 to the b wire. When there is only one bit sensed in a column and that bit is a 1, 1, 0 (a 1 on the a wire and a 0 on the b wire) is sensed in the column. When there is only one bit sensed in a column and that bit is 0," 0, 1 (a 0" on the a wire and a 1 on the b wire) is sensed in that column. When both the bits one and zero are sensed in a column, then 1, 1

is sensed in that column. When there is no bit sensed in a column, then 0, is sensed in that column.

In a second content-addressed memory discussed later, each column of the memory consists of a group of column wires. Each row of the memory stores a word consisting of a number of groups of bits. Each two groups of bits represent a character. Each group of bits consists of one l bit and all the rest 0 bits. In one particular memory which is illustrated, the successive groups have four bits, then nine bits, then four bits, then nine bits and so on. This type of code is known as a 4 9 code since four bits followed by nine bits represent one character. The invention, however, is also applicable to content-addressed memories arranged in codes different than this, such as 3-4 codes, 5-7 codes, and so on.

A stored word" is defined here as all or part of the information stored in one line of the memory. The number of bits or characters in the word will depend, of course, on the number of columns in the memory. In the event that this word is relatively long and corresponds, for example, to complete sentences or to a complete set of data describing, for example, a medical history, or the name, address, policy number, premium due date and so on of a policy holder, such "word is sometimes referred to in this art as a message However, in the present application, the term "word is used throughout to avoid any ambiguity between the description of the readout of one line of information (which may have many items of information) and several lines of information. In other words, in the present application, when it is stated that more than one word is read out of the memory, it is to be understood that the contents of more than one line of the memory is read out.

A driver may be active or inactive. A driver is inactive when it is not applying a signal indicative of a binary bit to the wire to which it is connected. In this condition, the driver is essentially disconnected" from its column wire. An active driver may be an original" or a non-original" driver. An "originaP driver is defined here as a driver to which a tag bit is applied. It remains on and does not change its condition during the entire memory interrogation. A non-original driver is one which applies a 1" or 0 to its wire in accordance with the interrogation routine to be discussed below. The condition of this driver can be changed (it can apply a 1 rather than a O or vice versa, or can be changed to an inactive driver) during the interrogation routine.

FIGURE 2 The content-addressed memory shown in FIG. 2 has seven rows and live columns. In practice, the memory may be much larger than this but the smaller size memory is employed for purposes of illustration. Each column in the memory has two leads a and b and each row has one lead. At each place in the memory where a column intersects a row, a diode is connected either from the a column to the row lead (to represent storage of a binary one) or the b column to the row lead (to represent storage of a binary zero) but not from both the a and b columns to the row lead. The diodes are identified by the legend a, S where a refers to the column and ,8 refers to the row. For example, there is a diode connected between column la and row l and this diode is legended la-l. In this example, the anode is always connected to the row lead, however, with different polarity power supply connections, the diodes would be connected in the opposite sense.

All of the row leads in the memory are connected through resistors to a common terminal 12 to which a positive voltage is applied. The input tag word is applied through a bus 14 to a block 16 legended driver, logic, sensing and switching circuits. These circuits are discussed in more detail later. Their function is to apply the tag word to the memory and to extract from the memory the one or more output data words therein corresponding to the tag word. The output data word or words appear on bus 18.

The operation of the memory of FIG. 2 will be discussed by two examples. In the first, the tag word has two bits and these are applied to columns 1 and 2. The two bits are 1, l. The one applied to column 1 causes diodes 1li-2, 1b-3, 1b-4, lb-S and 1b-7 to conduct since column lead 1b is made negative. Diodes 1a-1 and 1a-6 are cut-off since column lead 1a is made positive. The one applied to column 2 causes diodes 2b-4, 2b-6 and 2b-7 to conduct and diodes Ztl-1, 2a-2, 2a-3 and 2a-5 to be cut-off.

As diodes 1a-1 and 2a-1 are cut olf, the row 1 lead carries a positive Voltage. Rows 2-7 are returned through conducting diodes 1b-2, lla-3, 1b-4 and 2b-4, lb 5, 2b-6, and 1b-7 and 2b-7, respectively, to a negative voltage. Rows 2-7 therefore all carry a negative voltage. Both wires of columns 3, 4 and 5 are all returned through an appropriate impedance in block 16 to a negative valve of voltage, however, not quite so negative as the voltage appearing on rows 2-7. Accordingly, the only diodes connected to columns 3, 4 and 5 which conduct are those in row l, namely diodes 3b-1, 4b-1 and Srl-1. Positive voltages are developed on column wires 3b, 4b and 5a. The sensing circuits in block 16 sense the positive voltages in columns 3, 4 and 5 and sense also the positive voltages in the columns 1 and 2 to which the tag word is applied. The word sensed is therefore 11001 and this is the output data word from the memory. This example is a simple one since there is only one word in the memory corresponding to the tag.

In the next example, assume again that the input tag word is two bits and is applied to columns 1 and 2. The value of the tag word, however, is 0, 1. By an analysis similar to the one given above, it can be shown that there are three words in the memory corresponding to the tag word, namely the words in rows 2, 3 and 5. If it is attempted to read out the memory during the time that the tag word is applied, 0, 1 is sensed in column 3 and 1, 1 is sensed in columns 4 and 5. Any 1, 1 indicates that there is more than one word in the memory corresponding to the tag. ln the present example there are three different words.

The way in which the three words in the memory corresponding to the tag are extracted from the memory is illustrated generally in the tlow chart of FIG. 3. First the column furthest to the left at which l, l is sensed is driven by a zero The driver which does this is termed as a non-original 0" driver. In the present instance, column 4 is the furthest left column at which 1, l is sensed. Driving this column with a zero" causes column wire 4a to develop a negative potential. Conducting diodes 4a-2 and 4a-5 cause rows 2 and 5 to go negative, leaving only row 3 at a positive potential. This positive potential is coupled, through diode 5b3, to column wire 5b and a 0, 1 is sensed in column 5.

There are now no longer any columns at which 1, l appears. Accordingly, the first output word should be obtained. The first two bits in the output word are the bits of the tag word, namely 0, 1. A 0 is sensed in columns 3 and 5. One senses the same bit that is being driven, a 0, in column 4. The entire word read-out is therefore 01000. This is the word stored in row 3.

The next step is to drive with a one driver that column furthest to the right having a non-original zero" driver. In the present instance, this refers to column 4. Driving with a one means applying 1, 0 to the column. When this is done, diode 4b-3 conducts forcing row 3 to assume a negative potential. Rows 2 and 5 are not coupled with diodes to negative columns, so these rows remain positive. The coupling through diodes SI1-2 and Sa-S cause a l, 1 to be sensed in column 5.

The next step is to drive with a zero to the column furthest to the left in which a 1, I appears (column 5 in this instance). This causes the l, 1 signal in column 5 to change to 0, 1 and, as no other 1, 1 appears in any column, another answer is recordedin this case 01010 (the word in row 2).

Next, the column furthest to the right having a non original zero" driver (column is driven instead by a 1 driver and the last answer 01011 is obtained. Since there are no non-original 0 drivers remaining, the routine is completed.

In the interrogation routine described above, there are three words in the memory corresponding to the input tag word. There are five steps required to obtain these three words from the memory. The steps of recording the answer occur simultaneously with the driving steps and they are not counted in as they occupy no separate timing cycle. It can be proved that in the general case the number of steps required to extract m words from the memory is 2m-1.

In the discussion above, the words in the memory corresponding to the tag word appear in r-ows 2, 3 and S. However, these words are extracted in the following order 01000 (row 3), 01010 (row 2), 01011 (row 5). These words are in binary ordered relation, that is, the word of lowest value is extracted first, the word of next value next, and the word of next value next. It can be shown that the interrogation routine described does extract the words in predetermined order regardless of their location in the memory. Thus, a separate time-consuming sort routine is not required. It is also possible to extract words from the memory in decreasing order of significance of the words. This is done, for example, by changing the order in which the columns are driven or by changing the initial assumption made as to the voltages which represent zero" and "Unef,

In the examples given above, the tag word has two bits and is applied to columns 1 and 2. It should be appreciated that the tag word can have any number of bits up to the maximum number of bits in a memory word. It should also be appreciated that in the memory of the invention the tag bits can be applied to any of the columns in the memory. For example, in the case in which there are two bits, these can be applied to columns 2 and 5 or 3 and 4 or any other two columns. This is important in many applications as there may be many different criteria by which it is desired to extract the contents of the memory. In the case of a memory storing vehicle license plate numbers, for example, only the last two or the first three or any other combination of license plate characters may be known and yet it may be desired to extract all license numbers which correspond to these known characters. In cases of a memory storing information as to policy holders, it may be desired to extract information from the memory in accordance with the policy numbers, or in accordance with the ages of the policy holders, or in acccordance with the dates when premiums are due and so on.

FIGURE 4 FIG. 4 shows in somewhat greater detail the circuits of block 16 for one column of the memory. These circuits include driver circuits 20 which may be connected to the column 22 via a switch 24. The switch is shown as a mechanical switch, however, in practice, it may be an electronic switch made up of transistors, diodes or the like. In one practical circuit, the switch is actually part of the driver circuit itself as is discussed later. The switch may be controlled by the logic circuits, as indicated schematically by dashed line 28 or by the input tag bit, as indicated schematically by the dashed line 30 extending from the driver circuits 20. This is discussed in more detail later in connection with the driver circuits.

In the circuit of the present invention, in the event that a tag bit is applied to a driver circuit that driver circuit is thereafter known as an original driver, as explained above. It continues to drive the column with which it is associated. Further, the switch 24 continues to remain in closed position connecting the driver circuit to the column.

In the event that the driver circuits 2l] do not receive an input tag bit, they can be controlled by the logic circuits 34 which are connected to the driver circuits by bus 36. The logic circuits 34 also apply outputs to other logic circuits via bus 38 and receive inputs from other logic circuits via bus 40. The logic circuits also receive an input from the sensing circuits 42. The latter applies the output word it senses through a gate circuit 44 to an external circuit such as the buffer of a memory. The gate circuit 44 is controlled by the logic circuits 34 through lead 46.

The timing of the system of the present invention is controlled by a clock 46. It produces output pulses CP1, CP2 and CPS. These are applied through bus 48 to the logic circuits 34 for column 22 and to the logic circuits for the other columns of the memory.

FIGURE 5 FIG. 5 illustrates the interconnection among the various logic circuits of the present memory system. At the center of the ligure is a logic circuit for column one ofthe columns in the memory. This logic circuit is connected to the logic circuits for column i+1 and -l. The logic circuits for the first column of the memory are legended logic circuits l" and the logic circuits for the last column of the memory are legended logic circuits for bit n. The switches (24, FIG. 4) for each column are not shown in FIG. 5. FIG. S is not discussed in further detail, however, it may be useful in understanding the explanation of the logic diagram of FIG. 6.

FIGURE 6 A more detailed showing of the logic circuits i appears in FIG. 6. The logic circuits i+1, 1 and so on are the same as circuits i and are therefore not illustrated separately. The column i leads i,a and ib appear at the upper right. They are connected through a switch 24 to the driver 20. The leads are also connected to the sense amplifiers and 52.

The outputs of the sense amplifiers 50 and 52 are applied through inverters 54 and 56 to and gate S8. The outputs of the amplifiers are also applied directly to and gate 60. The output of sense amplifier 52 serves also as one input to and gate 62.

And gate is connected to the set terminal S of flip-Hop 64. The latter 1 output x1 serves as one of the inputs to and gate 66 and one of the inputs to or gate 68. A second input to and gate 66 is 7?, derived from inverter 70.

The output of and gate 66 is applied to set terminal S of flip-Hop 72 through or gate 83. The 1 output of flip-hop 72 is the f1 signal applied to driver 20. f, is also applied as one of the inputs to and" gate 74. The reset input R to flip-flop 72 is the output of or gate 76. This or gate receives an ST input from and gate 78 (see FIG. 5) and an I, input from the preceding logic stage. Il is also applied as one input to or gate 80.

The output vl or and gate 66 is applied through or gate 81 as a reset signal for flip-Hop 82 and through orl gate 83 as a set signal for flip-flop 72. The 0 output of flip-op 82 serves as a second input to and gate 74. And gate 74 sets flip-op 84.

The Z1 output available at the 1 output terminal of fiipfiop 84 is applied as one input to or gate 86. The second input is h1 from the preceding stage. z, is also applied as an input to and gate 88. The second input to and gate 88 is from inverter 90. The third input to and" gate 88 is En from inverter 92 (FIG. 5). The output f wl of and gate 88 is applied through or gate 89 as a set signal for tlip-tiop 82. w, is also applied as the second input signal to or gate 80.

In the operation of the circuit of FIG. 6, the driver 20 has three possible states, determined by f, and d1. If J{1:0, the driver is cut-off and is disconnected from the column wires by open switch 24. In this case, the column wires are terminated only in the sense amplifiers. If f,:l, the polarity of the drive, that is whether the driver drives its column with a "one (1, or a zero (0, 1), is determined by 41,.

The timing for the system of FIG. 6 is controlled by the clock 46 of FIG. 4. The clock produces three, time spaced clock pulses CP1, CP2 and CPS. The lirst pulse CP1 controls the resetting of ip-tiops 72 and 84. The second pulse CP2 controls the strobing (gating) the sense amplifiers. During this interval, the column signals are sensed. The third pulse CPS is applied to and gates 66 and 88 and in this way controls the set states of flipops 72 and 82.

F, and D, are the inputs which indicate whether the driver is an original driver and, if so, the particular binary bit (zero" or one") the driver is to apply to its column. These inputs are initiated at the start of the interrogation and do not change until the interrogation is complete. F1:l denotes an original driver. The value of the D, bit, when F,:l, indicates the particular bit the driver applies; when Fi:l, D,:1, the driver applies a 1, 0; when F1:1, D,:0, the driver applies a 0, 1. When F,:0, then Dl:0 and the driver is either inactive or is a non-original driver depending upon the states of the various logic stages as discussed more fully below.

If F,:1, or gate 83 is actuated and Hip-flop 72 becomes set. Thus, even if a "l" signal appears momentarily at ff* (as will be seen later, this can only occur during CPS), tiip-op 72 returns to the set state (fil-1) upon termination of this pulse. Suilicient time is allotted between clock pulses so that f, settles back to "l" by the time CP2 of the next cycle occurs. Also, if F,:l, and" gate 74 is inhibited (a "0" is applied to the and gate via inverter 94) and ip-op 84 cannot become set. Therefore, z, remains "0." As the ip-op 84 is reset at the beginning of each cycle by CP1, Z1 remains "0" for the entire interrogation.

If D,:l (F, must be "1" for this to occur), or gate 89 is actuated and sets ip-op 82 (d,:l). a', remains "1 during the interrogation. If D,:0 while F,:1, and gate 99 becomes enabled and resets ip-op 82 through or gate 81. d, therefore becomes "0" and remains "0" during the interrogation. In this manner, if F1:l, D, and F, control the state of the driver for the interogation, regardless of what signals occur during CPS.

At the beginning of each cycle, ip-llops 64 and 84 are reset by CP1 so that right after CP1 and before CP2, 11:0. During this time, zi is also 0" except in the case when F,:0. i:l and 31:1. Under the latter conditions, which occur when driver 20 is a non-origina zero driver, and gate 74 is enabled and sets liip-tiop 84 right after CP1. 15:0, 2.,:1 therefore indicate a nonoriginal "0" driver for column i.

When CP2 occurs, if a 1, "l" is sensed by ampliers 50 and 52, and gate 60 is enabled and it sets ftip-op 64. This causes x, to change to 1. Thus, 1:1:1 signifies a "l," "1" sensed in column i. It might be mentioned here that the column wires are also sensed when driven. However, in this case the signals sensed can only be "l," "0" or "0, 1. Therefore, and gate 60 will remain o and xi will remain "0."

The state of the variables for a given cycle, during an interval after CP2 has occurred but before CP3 has occurred, is considered next. The column has been read out during CP2 and f, and d, are about to be set up for the next cycle. Assume, rst, that one or more ls have been sensed in the different columns. From the logic diagram it can be seen that xl and ki are applied to an or gate 68 to produce the output kul. Also k1:0,

where k, is the input to the logic circuits for bit 1 (see FIG. 5). Thus, in Boolean form zat-a+ +Je.-. tu

In other words, if one or more 1, ls are sensed to the left of column i, k,:l. It is also clear from the Equation 1 that if k1: 1, then all the ks to its right are also 1 (i.e., k1+1=k1+22 Ikn+1=1 161:1). Further, 161:1, and gate 66 is inhibited so that v1 is forced to remain 0. Also, for the case under consideration (i.e., one or more l, ls sensed), kmq (from the nth column) must be 1 and n+1=0 (FIG. 5). This prevents the readout of output bit Bl and also inhibits "and" gate 88, keeping W1=O If k,:0, Equation l indicates that no 1, ls are present in any columns to the left of column i. It k,:0 and x,:1, the column furthest to the left in which 1, l appears is column i. This is clear from FIG. 6. Under these conditions, during CPS and gate 66 becomes enabled and v, becomes l. Thus, vl:1 (during CP3) indicates that column i is the furthest left column at which l, 1 is sensed. v1:1 is applied through or gate 33 as a set signal for flip-flop 72 and through or gate 81 as a reset signal for ip-op 82. This makes f,:1 and d,:0. 171:0, 12:1, dl:0 indicates vthat the driver 20 is to act as a non-original zero driver during the next cycle. The xfs (hence the kls) are temporarily stored in the ip-ops to prevent the conversion of the next driver to the right for a 1, 1 column from being immediately converted `to a "0 driver. In summary, when one or more l, ls are sensed, the k or gate chain (the gates corresponding to 68) and the v gates (the and" gates corresponding to 66) furnish the logic necessary for converting the driver for the furthest `lett column at which 1, l is sensed to a 0 driver.

The next case to be considered is the one in which no 1, ls are sensed. As previously mentioned, this indicates that an answer has been reached. kmq goes to 0, (see Equation l) so n+1:l. n+1=1 is a priming signal for and gate 62 and allows the sense amplifier output bit B, to be applied through this and" gate to a display or buffer stage (not shown). As every pair of sense amplifiers produce complementary outputs under these conditions, only one of these outputs need be employed. En+1=1 serves also as a priming signal for and gate 88. But, all xs equal "0 so that all andI gates corresponding to gate 66 are inhibited.

The circuit of FIG. 6 indicates that zi and h, are inputs to or gate 86 which produces h, 1. h:0 (see FIG. 5). Thus, in Boolean form It was previously shown that z,:1 denotes the presence of a non-original 0 driver. Therefore, if one or more non-original 0I drivers is present to the right of bit i, 111:1 (see Equation 2). Further, all h1 inputs to the left will also be "1 (i.e., h, 1:h1 2: h:1 if h,:1). If h1:0, there are no non-original 0" drivers to the right of bit i (see Equation 2). If, further, z,:1, then the non-original zero driver furthest to the right is the driver for column i. When these conditions (h,:0, z,:l, n+1:1) are fulfilled, during CPS, and gate 88 is enabled and wl becomes l. Thus, w,:1 (during CPS) indicates that the non-original zero driver furthest to the right is the driver for column i. w1:1 sets the Hip-flop 82 through or gate 89 making 1:1, thereby converting the driver 20 to a l driver for the next cycle.

w1=1 is also applied to or gate 80 and causes 11,1 to be 1. The I or gate chain (the gate corresponding to 80) propagates a signal to the right (see FIG. 5), so that l1+1=1 causes I1+3=l1+3= n=1. These signals in turn reset any ofthe fiip-ops corresponding to 72, located to the right of bit i, which happen to be set. Therefore, any ip-tiop 72 which is located to the right of bit and which is set, indicates that its driver is either an original driver or a non-original l driver (the non-original driver furthest to the right is the one for column i). The flip-Hops 72 for the original drivers are set again, after the l signal terminates, by their respective F signals. However, the Hip-Hops 72 for the non-original drivers to the right of column i are reset by the I signal and their drivers receive F,=0. Their drivers therefore are made inactive. Thus, when no 1, ls are sensed, the chain of or gates corresponding to 86 (i.e., the h or gate chain) and the w gates corresponding to 88 furnish the logic necessary to convert the leftmost non-original 0" driver to a 1 driver; the chain of or gates corresponding to 80 (i.e., the l or gate chain) allows propagation of a signal which renders all non-original (1) drivers to its right inactive.

A few additional comments are in order. First, when the driver for the furthest left column at which l, 1 is sensed is converted to a 0 driver, the z, in question changes from 0 to 1. This change will affect the signals propagating down the h or" gate (gate 86) chain (if there are no non-original "0 drivers to the right of column i). However, since this only occurs for the case when @1120, any changes in the hs will not affect the states of the flip-flops, as all gates corresponding to and gate 88 are inhibited. Second, when converting the furthest to the right non-original 0 driver to l driver, the zis (hence the hls) are held by flip-hops in order that the conversion not be followed immediately by a second conversion of the next right non-original 0 driver.

The y, outputs need not be detected in every bit position. It may be more convenient to use an additional column in the diode matrix, coupled to all rows with diodes, to give the y (no answers) indication.

A reset pulse is applied to all logic circuits before the start of every interrogation. This is done after the tag word has been applied to the original drivers. The reset pulse resets all flip-Hops 72 to erase any bits stored during the previous interrogation. The original driver ip-ops, of course, switch back to the set state before the start of the first cycle as F1=1.

While not shown, if desired, the ST pulse may be applied to a storage ip-flop and the 1 output thereof applied to a two input and gate. The second input to the and gate is the F, signal. The output of the and gate is an input or gate 83 instead of the F1 input thereto. The function of this circuit is to prevent Hip-flop 72 from being reset after SP ends (SP endures only as long as CPS). However, if a system reset is used, as discussed above, this circuit is not necessary. If the circuit is desired, the system reset pulse is applied also to the reset terminal of the storage ip-op.

Finally, the termination of the interrogation is determined by the coincidence of the following conditions.

kn+1=l (RECORD ANSWER) 713:1 (NO MORE NON-ORIGINAL 0 DRIVERS REMAIN) Therefore, an and" gate 78 (FIG. 5) with these two inputs and gated by CP3 may be used to generate a signal which stops the machine.

FIGURE 7 A more detailed showing of the driver and switch 24 circuit appears in FIG. 7. The circuit includes a rst driver circuit 110 and a second driver circuit 120. Since the circuits are identical except for the inputs, the same reference numerals primed are applied to the elements of circuit 120 as are applied to the elements for the circuit 110.

Driver circuit includes a PNP transistor 122 connected in series with a resistor 124 and NPN transistor 126. Terminal 128, to which the emitter of transistor 122 is connected, is returned to a positive voltage source and terminal 130, to which the emitter of transistor 126 is connected, is returned to a negative voltage source.

The input signal is applied from terminal 132 through resistor 134 to the base 136 of transistor 122. The input signals ft and E, are applied to and gate 138. Its output signal is applied through a resistor 140 to the base 142 of transistor 126. A voltage divider resistor 144 is connected between the base 136 of transistor 122 and connection 146.

As already mentioned, driver circuit is similar to driver circuit 110. It receives an input signal applied to terminal 132. However, the other input to the circuit consists of signals f1 and di rather than f1 and Til.

The collector of transistor 126 is connected to column a and the collector of transistor 126 is connected to column ib. As previously discussed, in the operation of the circuit of FIG. 7 it is desire-d that: when f,:0, both drivers be cut-off; when )2:1 d1=1, the first driver 110 apply a 1 to column ia and the second driver 120 apply a 0 to column 1b; when f1=1 and d,=0, the first driver 110 apply a 0 to column a and the second driver 120 apply a 1 to column ib.

Assume first that f,- -0. This means fzl, that is, a positive voltage is applied to input terminal 132. This positive voltage causes transistor 122 to be cut-off. Similarly, the positive voltage applied to terminal 132 causes transistor 122 to cut-off. As f1=0, and gates 138 and 138 are inactivated and a 0, that is, a negative voltage appears at connections 146 and 146. This negative voltage cuts o' transistors 126 and 126 and the points 148 and 148 in the circuit, to which the column wires are connected, essentially float. Under these conditions, then, the inputs to the drivers are such that the driver transistors act as open switches so that the inputs effectively disconnect the column wires from the drivers.

Assume now that f1=1 and d,=1. When d1=1, and gate 138 is cut-off and connection 146 becomes negative. This causes transistor 126 to cut-off. When f1=1, represents a negative voltage. This is applied to terminal 132 and causes transistor 122 to conduct. The column a wire is connected through an impedance in the sense amplifier to a value of voltage such that under these conditions point 148 is positive so that column a wire is also positive. As one example, the column a wire may be connected through some value of impedance to ground.

When d1=1 and f,=1, and" gate 138' is activated. Connection point 146 now becomes positive. This causes transistor 126' to conduct. Under the same conditions, terminal 132 is negative and current ows through the voltage divider made up of resistors 134 and 144. The values of resistors 144 and 134' are so chosen that the voltage at the base 136' is positive to an extent such that transistor 122' does not conduct appreciably. Under these conditions, the collector of transistor 126 is negative and the column ib wire is negative. To summarize, when f1=1 and d1=1, column ia becomes positive and column ib becomes negative and this corresponds to driving column i with l, 0.

Assume now that fr=l and d,=0. Now and gate 138 is enabled and and" gate 138 is disabled. Transistors 126 and 122' now conduct and transistor 126' is cut-off` Transistor 122 does not conduct appreciably. Accordingly, the column ia wire is made negative and the column ib wire is made positive. This corresponds to driving column 1' with 0, 1.

General discussion In the content addressed memory shown in FIG. 2 and having logic circuits interconnected as shown in FIG. 5, different words can be extracted in a certain sequence. With the routine described, if there is more than one word in the memory corresponding to the tag word, these words are read out of the memory in lexieographieal order with the word of lowest value read out first. Using the same routine but a dierent manner of interconnecting the logic circuits for the various columns, it is possible to read out the words in the memory in a different order. This is illustrated in the simplified showings of FIGS. 8a and 8b.

FIG. 8a shows the logic circuits comparable to those of FIG. which would be required for a memory with three columns. The interconnection of logic circuits is exactly as shown in FIG. 5. It is possible, however, to interconnect the logic circuits in another way. For example, k, and I4 can c-onnect directly to k1 and I1. Similarly, h4 can connect directly to ho. Now, however, the k3, Ia and h2 leads may be opened. The k3 `output of logic circuit 2 may then be fed back through an inverter similar to 92 to all of logic circuits. The I3 output of logic circuit 2 is left open. The h2 input to logic circuit 2 is made 0. The k3 input to logic circuits for bit 3- is made 0. The h2 input for the logic circuits of bit 3 is applied to the inhibit terminal of an and" gate comparable to 78. What is described above, is the interconnection of logic circuits in a manner somewhat comparable to that of a ring circuit, which can be opened between any pair of logic circuits. If a circuit of this nature is interrogated in accordance with the interrogation routine previously described, the words stored in the memory appear at the output of the memory in a different order than previously discussed. For example, if the logic circuits for bit 2 are effectively made the last logic circuits in the group, then the words will be read out of the memory in chronological order but with bit 2 considered the bit of least significance and bit 3 considered the bit of most significance. For example, if the words read out are 101, 001, 100, they will be read out in the following order: 100, 001, 101. With the circuits interconnected as in FIG. 8a, however, the words are read out in the following order: 001, 100, 101.

The circuit of FIG. 8b shows a simple way of interconnecting the various logic circuits so that they function in the manner just described. The member 160 is formed of an insulating material and it is capable of rotating about the center axis 162. The three arms of the member each have mounted thereon terminals between some of which conductors extend. In the position of the switch shown, the output of the logic circuits for bit 1 are applied as inputs to the logic circuits for bit 2. The output of the logic circuits for bit 2 are applied as inputs to the logic circuits for bit 3. The E output of the logic circuits for bit 3 is connected back to all three other logic circuits via lead 164. I4 is connected to an open circuit. h4, k1 and [1 are connected to lead 166 to which a "0" is applied.

If the insulator member 160 is moved through 120 in the clockwise direction, the interconnection between the various logic circuits change. Now, the first logic circuits in the ring are the logic circuits selected for bit 2. The second circuits are those for bit 3 and the third circuits are those for bit 1. The k output of the logic circuits for bit l is now fed back through an inverter and lead 164 to all logic circuits. In a similar manner, the h input of the logic circuits for bit l and the k and l input for the logic circuits for bit 2 will be connected to 0 via wiper 168 and lead 166 and so on.

Three stages have been shown in the above example for simplification. Clearly, the same techniques can be applied to a ring of many more (n) stages.

FIGURE 9 In the memory shown in FIG. 2, each column of the memory includes two column wires and each column is capable of storing a binary bit in each row of the memory. The present invention is not limited to this specific type of memory. It is applicable also to content-addressed memories of the type shown generally in FIG. 9. This memory consists of different groups of column wires. The first group 1 has four wires, the second group has nine wires, the third group 3 has four wires, the fourth group (not shown) has nine wires and so on. In one line of the memory, the memory element (diode) for a group of nine wires stores a code containing one l (and eight 0s") while the memory element (diode) for a group of four wires stores a code containing one l (and three 0s). This is known as a 4-9 (or one out of four, one out of nine) code and is comparable to a code commonly used in punched cards. One four bit plus one nine bit group of this type, together, represent one character. Together, the four plus nine bits (each of which contains only one 1) can be permuted in 36 different ways and can therefore represent 36 different characters. ln one practical memory, the word stored in each row of the memory may be characters in length and the memory therefore may have a total of 1041 column wires (13 for each character plus one for the power supply). The memory may, of course, have many more characters in each line if desired. The number of rows will depend, of course, on the number of words to be stored in the memory.

The operation of the memory of FIG. 9 is quite analogous to that of the memory of FIG. 2. In the example illustrated, in groups 1 and 2, the first row stores the character 1000, 100000000; the second row stores the character 1000, 010000000; the nth row stores the character 0010, 000000100.

There are certain circuits which are individual to each wire of a group. These are illustrated generally by the blocks 170, 171 and so on. Further, there are circuits common to all wires of a group. Such circuits are shown at 172, 173 and so on. These circuits are discussed in more detail later.

The way in which more than one word associated with a given tag word can be retrieved from the memory is analogous to what has already been described in connection with the memory of FIG. 2. The flow chart for the memory of FIG. 9 is shown in FIG. 13. The application of the flow chart to a particular memory is illustrated in FIG. 14.

FIGURES I3 and 14 FIG. 14 shows at the upper portion of the sheet the words stored in nine lines of a memory. Each message has 14 patterns of bits. In practice, the memory may have many more than nine lines and each word may have many more than 14 groups of bits. The code employed is a 3-4 code rather than a 4-9 code. There are two reasons. One is for the purpose of simplifying the explanation. The other is to show that the interrogation routine to be discussed is general and can be applied to a content-addressed memory arranged in any code.

To start with, the tag word is applied to the memory. The tag word assumed is and this tag word is applied to the first group of wires in the memory. It might be mentioned, incidentally, that as in the memory of FIG. 2, the tag word or words can be applied to any one or more groups of wires. For example, the tag word may be 010, 100, 0010 and it may be applied to groups 3, 5 and 6, respectively, of the column wires.

When the tag word 100 is applied to the first group of Column wires, the groups of bits appearing on line la are sensed. It will be noted that more than one l appears in groups 2 through 14. It may also be seen that 100 appears in group l on all nine lines of the memory. Therefore, the tag word 100 applied to group 1 selects all nine words stored in the memory. In a practical application. of course, the tag normally does not correspond to all words in the memory.

The routine shown in FIG. 13 indicates that when more than one 1 is sensed in at least one group of column wires, in the furthest left group in which more than one l appears, all wires except the furthest left wire which carries a 1 are to be driven with a O and the remaining wire is to be driven with a 1. Applying this to the particular example, group 2 is the furthest left group in which more than one 1" appears. The furthest left wire carrying a l is the rst wire of group 2. This wire is driven with a l and all remaining wires are driven with a 0. Accordingly, group 2 is driven with 1000. The tag word continues to be applied to group 1.

The groups of bits appearing on line 2a are now sensed in the memory. These are the bits which appear in the lines of the memory which corresponds to the two active drivers, that is, the drivers for groups 1 and 2. These drivers are driving their groups of wires with 100, 1000, respectively. 100, 1000 together appear in groups 1 and 2 on lines 1, 6 and 8 and therefore these words are the ones selected. Of the groups of bits sensed, some still have more than one 1.

The routine of FIG. 13 now indicates that again the furthest left group in which more than one l appears is to be driven with a non-original driver. All wires in this group except the furthest left wire which carries a 1" are to be driven with a and the remaining wire is to be driven with a 1. Applying this to the example, the furthest left group in which more than one 1 appears is group 3. The number sensed is 110. Therefore, group 3 must be driven with 100 as shown in line 3a. When this is done, the words appearing on lines 6 and 8 are selected.

At this time, the next group having more than one 1 is group 6. Its character is 1100. Therefore, group 6 is driven with 1000. When this is done, there is no longer more than one l sensed in any group. Accordingly, one word in the memory must be read out. This is the word which appears on line 4a and it is the one that corresponds to the word written on line 6 of the memory.

There is now at least one non-original driver present which has not yet driven its group of wires through all states necessary to resolve all characters stored in a group of wires. Hereafter, such a driver is termed an incomplete" driver. Of the incomplete drivers present (the drivers for groups 2, 3 and 6) the driver furthest to the right is the one in group 6. It should be recalled that the word originally sensed in group 6 was 1100. In step 4a, group 6 was driven with 1000. It is therefore now necessary to drive group 6 with 0100 as indicated in the ow chart of FIG. 13. When this is done, there is not more than one 1 sensed in any group. Accordingly, the second answer can be recorded. The second answer corresponds to the word recorded on line 8 of the memory.

The procedure above may be continued in the manner set forth in FIG. 14 to obtain the remaining words in the memory. It may be observed that only 15 steps are necessary in this particular case to retrieve nine words written in the memory.

FIGURES 10-12 The circuits required for implementing the interroga-l ti-on routine described above are shown in FIGS. 10-12. There are n groups of wires in the memory and there are therefore n groups of logic circuits, one for each group of wires. The logic circuits for group of the n groups of wires is illustrated generally in FIG. 12 by block 184. There are m wires in group 1. The first wire is i1, the second i2 and so on and the last wire is im. Each wire has associated with it certain circuits. The circuits for wire il are shown generally at 186 and the circuits for wire m are shown generally at 188, both in FIG. 12. The various leads and letters in FIG. l2 illustrate the manner in which the signals in the various blocks flow between blocks. A more detailed showing of the circuits 184 appears in FIG. l0 and a more detailed showing of the circuits for wire j of the m wires of group i appears in FIG. 1l. Those of the circuit elements in FIGS. 10 and l1 which are anal- 14 ogous in structure and function to corresponding circuit elements of FIG. 6 have the same reference characters applied.

In the circuits of FIG. 6, each column has two wires. The ip-l'lop 64 is set when both of the wires carry a 1. In the circuit of FIG. 10, there are m column wires in a group of column wires. The signal sensed at the rst wire is qu, the signal sensed at the second wire is qu and so on. These signals are applied to a threshold 2 circuit 190. This may, for example, be a transistor arnplier normally biased to cut-off, which requires two or more input signals to be driven into conduction. Its function is to produce a l output when it receives two or more 1 inputs. The output of the threshold circuit 190 is used to set the Hip-flop 64. A set flip-flop 64 indicates that there is more than one pattern of bits stored in the m wires of group i which corresponds `to the tag word.

The signals qu through qlm are also applied through an or gate 192 to an inverter 194. If there are no ls stored in the m wires of group i, the inverter 174 produces a l output. Therefore, )11:1 indicates that there is no pattern of bits stored in the group of wires z' which corresponds to the tag word.

The and gates 621 through 62m are for the purpose of reading out a pattern of bits. When there is only one pattern to be read out which corresponds to the tag word, the B11 Bim pattern read out will consist of one 1" and m-l 0s."

Another addition to the circuit of FIG. 6 appears at the lower right of FIG. 10. It is Vthe threshold 2 circuit 196 which receives the en through ein, outputs of the tlipflop (FIG. 1l). It produces an output a, which is applied to and gate 74.

As in the previous discussion, the Fl and D1 indicate whether the driver is an original driver and, if so, the character the driver is to apply to its group. F1=l denotes an original driver. When F1=0, then D1=0 and the driver is either inactive or is a non-original driver depending on the states of the various logic stages, as discussed more fully below. In the present case, if F,=0,

If Fl=1, only one of D11 through Dlm is 1 (original driver). If Fi=l, ip-tlop 72 (FIG. 10) becomes set (through or gate 83) and remains set as previously explained. Further, since a 1 is applied to the inhibit input 94 of and gate 74, this and gate remains inhibited.

lf F,=l, then one of D11 through Dim is a l and or" gate 198 produces a Ci=1 output. Ch is applied to the inhibit input terminal 200 of and gate 202 (FIG. 1l). Therefore, flipilop 18|) can be set through or gate 204 only if D11-:1. If Dlj=1 (and F1=1), then ip-op 180 becomes set and remains set for the entire interrogation. It cannot be reset via and gate 206 since 1=0. It cannot be reset via and gate 208 since w1=0. (w1=0 because when F=1, and gate 74 is inhibited, Z120, and z1=0 inhibits and gate 88.) Thus, if there is an original driver present for group i and the i wire of group z is to be driven with a 1, the ip-tlop 180 for the j wire becomes set and remains set during the entire interrogation. The ip-op 180 does not become reset until the stop pulse ST is applied to or gate 216. The flip-flops 180 for all other wires of group i remain reset.

When ip-tiop 180 is set and gij is 0, "and" gate 212 is energized. Its output di, is applied to the driver 20j which applies a 1 to wire j of group i. Driver 20j consists of only one of the transistor circuits shown in FIG. 7 and it roperates in the manner already discussed in connection with FIG. 7.

Before going on with the discussion of the sensing of bits in the various groups, a few shorthand ways of saying things will be discussed. When the memory is driven with a tag word, there may be one or more words in the 

1. THE COMBINATION COMPRISING A CONTENT-ADDRESSED MEMORY WHICH STORES WORDS IN RANDOM ORDER IN DIFFERENT ROWS; AND MEANS RESPONSIVE TO A TAG WORD APPLIED TO THE MEMORY TO WHICH M WORDS IN THE MEMORY CORRESPOND FOR RETRIEVING SAID M WORDS IN AN ORDER RELATED TO THE CONTENT OF THE WORDS, WHERE M IS AN INTEGER GREATER THAN
 1. 